﻿#region
//Copyright (c) 2016-2022 北京网非科技有限公司(wfdot.com)
//
//Permission is hereby granted, free of charge, to any person obtaining a copy
//of this software and associated documentation files (the "Software"), to deal
//in the Software without restriction, including without limitation the rights
//to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
//copies of the Software, and to permit persons to whom the Software is
//furnished to do so, subject to the following conditions:
//
//The above copyright notice and this permission notice shall be included in
//all copies or substantial portions of the Software.
//
//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
//IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
//FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
//AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
//LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
//OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
//THE SOFTWARE.
#endregion
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SumiaAccountBook.Biz
{
    public class KVKeyValue : KVObj
    {
        private Dictionary<int, string> _dictIncome = new Dictionary<int, string>();
        private Dictionary<int, string> _dictOutcome = new Dictionary<int, string>();

        public KVKeyValue()
            : base()
        {
            var keyValues = DataAccess.DaCommon<DataAccess.Entity.KeyValue>.GetAll();
            foreach (var val in keyValues)
            {
                _dict.Add(val.Key, val.Value);
                if(val.Type==(int)KVCashFlowType.emCashFlowType.In)
                {
                    _dictIncome.Add(val.Key, val.Value);
                }
                else
                {
                    _dictOutcome.Add(val.Key, val.Value);
                }
            }
        }

        public List<string> GetValues(string cashFlowName)
        {
            int type = KVConstHelper.GetInstance().GetKey<Biz.KVCashFlowType>(cashFlowName);
            if(type==(int)KVCashFlowType.emCashFlowType.In)
            {
                return _dictIncome.Values.ToList();
            }
            else
            {
                return _dictOutcome.Values.ToList();
            }
        }
    }

    public class KVProject : KVObj
    {
        public KVProject()
            : base()
        {
            var keyValues = DataAccess.DaCommon<DataAccess.Entity.Project>.GetAll();
            foreach (var val in keyValues)
            {
                _dict.Add(val.Key, val.Name);
            }
        }
    }

    public class KVGoingProject : KVObj
    {
        public KVGoingProject()
            : base()
        {
            var keyValues = DataAccess.DaCommon<DataAccess.Entity.Project>.GetAll();
            foreach (var val in keyValues)
            {
                if(val.Status==(int)KVProjectStatus.emProjectStatus.Progress)
                { 
                    _dict.Add(val.Key, val.Name); 
                }                
            }
        }
    }

    public class KVStaff : KVObj
    {
        public KVStaff()
            : base()
        {
            var keyValues = DataAccess.DaCommon<DataAccess.Entity.Staff>.GetAll();
            foreach (var val in keyValues)
            {
                _dict.Add(val.Key, val.Name);
            }
        }
    }

    public class KVAccountBook : KVObj
    {
        public KVAccountBook()
            : base()
        {
            var keyValues = DataAccess.DaCommon<DataAccess.Entity.AccountBook>.GetAll();
            foreach (var val in keyValues)
            {
                _dict.Add(val.Key, val.Name);
            }
        }
    }
}
